package com.apps.realtyportal;

import java.util.ArrayList;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TabHost;
import android.widget.TabWidget;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.MenuItem;


public class Try extends SherlockFragmentActivity {
	    TabHost mTabHost;
	    ViewPager  mViewPager;
	    TabsAdapter mTabsAdapter;
	    ActionBar actionbar;

	    
	    protected void onCreate(Bundle savedInstanceState) {
	        //setTheme(SampleList.THEME); //Used for theme switching in samples
	        super.onCreate(savedInstanceState);

	        setContentView(R.layout.try_main);
	        actionbar = getSupportActionBar();
	        actionbar.setDisplayHomeAsUpEnabled(true);
	        //actionbar.setLogo(1);
	       
	        actionbar.setDisplayShowTitleEnabled(false);
	        mTabHost = (TabHost)findViewById(android.R.id.tabhost);
	        mTabHost.setup();

	        mViewPager = (ViewPager)findViewById(R.id.pager);

	        mTabsAdapter = new TabsAdapter(this, mTabHost, mViewPager);

	        mTabsAdapter.addTab(mTabHost.newTabSpec("simple").setIndicator("Location"),
	                LocationFragment.class, null);
	        mTabsAdapter.addTab(mTabHost.newTabSpec("contacts").setIndicator("Price"),
	                PriceFragment.class, null);
	        mTabsAdapter.addTab(mTabHost.newTabSpec("custom").setIndicator("Type"),
	                TypeFragment.class, null);
//	        mTabsAdapter.addTab(mTabHost.newTabSpec("throttle").setIndicator("Throttle"),
//	                LoaderThrottleSupport.ThrottledLoaderListFragment.class, null);

	        if (savedInstanceState != null) {
	            mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));
	        }
	    }

	    
	    protected void onSaveInstanceState(Bundle outState) {
	        super.onSaveInstanceState(outState);
	        outState.putString("tab", mTabHost.getCurrentTabTag());
	    }

	    /**
	     * This is a helper class that implements the management of tabs and all
	     * details of connecting a ViewPager with associated TabHost.  It relies on a
	     * trick.  Normally a tab host has a simple API for supplying a View or
	     * Intent that each tab will show.  This is not sufficient for switching
	     * between pages.  So instead we make the content part of the tab host
	     * 0dp high (it is not shown) and the TabsAdapter supplies its own dummy
	     * view to show as the tab content.  It listens to changes in tabs, and takes
	     * care of switch to the correct paged in the ViewPager whenever the selected
	     * tab changes.
	     */
	    public static class TabsAdapter extends FragmentPagerAdapter
	            implements TabHost.OnTabChangeListener, ViewPager.OnPageChangeListener {
	        private final Context mContext;
	        private final TabHost mTabHost;
	        private final ViewPager mViewPager;
	        private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();

	        static final class TabInfo {
	            private final String tag;
	            private final Class<?> clss;
	            private final Bundle args;

	            TabInfo(String _tag, Class<?> _class, Bundle _args) {
	                tag = _tag;
	                clss = _class;
	                args = _args;
	            }
	        }

	        static class DummyTabFactory implements TabHost.TabContentFactory {
	            private final Context mContext;

	            public DummyTabFactory(Context context) {
	                mContext = context;
	            }

	            
	            public View createTabContent(String tag) {
	                View v = new View(mContext);
	                v.setMinimumWidth(0);
	                v.setMinimumHeight(0);
	                return v;
	            }
	        }

	        public TabsAdapter(FragmentActivity activity, TabHost tabHost, ViewPager pager) {
	            super(activity.getSupportFragmentManager());
	            mContext = activity;
	            mTabHost = tabHost;
	            mViewPager = pager;
	            mTabHost.setOnTabChangedListener(this);
	            mViewPager.setAdapter(this);
	            mViewPager.setOnPageChangeListener(this);
	        }

	        public void addTab(TabHost.TabSpec tabSpec, Class<?> clss, Bundle args) {
	            tabSpec.setContent(new DummyTabFactory(mContext));
	            String tag = tabSpec.getTag();

	            TabInfo info = new TabInfo(tag, clss, args);
	            mTabs.add(info);
	            mTabHost.addTab(tabSpec);
	            notifyDataSetChanged();
	        }

	        
	        public int getCount() {
	            return mTabs.size();
	        }

	        
	        public Fragment getItem(int position) {
	            TabInfo info = mTabs.get(position);
	            return Fragment.instantiate(mContext, info.clss.getName(), info.args);
	        }

	        
	        public void onTabChanged(String tabId) {
	            int position = mTabHost.getCurrentTab();
	            mViewPager.setCurrentItem(position);
	        }

	        
	        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
	        }

	        
	        public void onPageSelected(int position) {
	            // Unfortunately when TabHost changes the current tab, it kindly
	            // also takes care of putting focus on it when not in touch mode.
	            // The jerk.
	            // This hack tries to prevent this from pulling focus out of our
	            // ViewPager.
	            TabWidget widget = mTabHost.getTabWidget();
	            int oldFocusability = widget.getDescendantFocusability();
	            widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
	            mTabHost.setCurrentTab(position);
	            widget.setDescendantFocusability(oldFocusability);
	        }

	        
	        public void onPageScrollStateChanged(int state) {
	        }
	    }

	// public boolean onOptionsItemSelected(MenuItem item) {
	//
	// switch (item.getItemId()) {
	// case android.R.id.home:
	// startActivity(new Intent(getApplicationContext(),
	// HomeActivity.class));
	// break;
	// default:
	// Toast.makeText(this, "Chosen: Menu " + (item.getItemId() + 1),
	// Toast.LENGTH_SHORT).show();
	// }
	// return true;
	// }
	    
		@Override
		public boolean onOptionsItemSelected(MenuItem item) {
			switch (item.getItemId()) {
			case android.R.id.home:
				Intent intent = new Intent(this, HomeActivity.class);
				intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
				startActivity(intent);
			}
			return super.onOptionsItemSelected(item);
		}

}
